home *** CD-ROM | disk | FTP | other *** search
/ Aminet 52 / Aminet 52 (2002)(GTI - Schatztruhe)[!][Dec 2002].iso / Aminet / comm / irc / epic4-mos.lha / share / epic / script / functions < prev    next >
Text File  |  2002-09-18  |  7KB  |  251 lines

  1. #
  2. # Some misc functions..  for 2.2 and beyond.
  3. # by: Ian Frechette  (frechett@spot.colorado.edu)
  4. # Wed Aug 18 00:26:53 MDT 1993
  5. #
  6. # ircII scripting note.  @ var = <expression> is used a lot. One case
  7. # where it is not feasible to use  the @ var = othervar or @ var = funct()
  8. # format is when the $(stuff) construct is needed.  In that case you
  9. # must surround it with [].  e.g.   @ blah = [$($0)]   will assign
  10. # to 'blah' the contents of the variable named in arg 0.
  11. #
  12.  
  13. #
  14. # These have been updated to handle multiple words.
  15. # format and lformat differ from $[-num]var and $[num]var in that
  16. # They don't chop off the string if it is too long.
  17. # These are obsoleted by the built in $pad() function.
  18. #
  19. alias format {
  20.     @ IRCII.word = [$1-]
  21.     if (@IRCII.word < [$0]) 
  22.         { @ function_return = [$([-$0]IRCII.word)] } 
  23.         { @ function_return = IRCII.word } 
  24. }
  25.  
  26. alias lformat {
  27.     @ IRCII.word = [$1-]
  28.     if (@IRCII.word < [$0]) 
  29.         { @ function_return = [$([$0]IRCII.word)] } 
  30.         { @ function_return = IRCII.word } 
  31. }
  32.  
  33. # pluck a word from a list.
  34. # eg. $blah == "one two three four five"
  35. # $pluck(blah three)     returns "one two four five"
  36. #
  37. alias pluck @ function_return = $0 = $remw($1 $($0))
  38.  
  39. /* These map some of the original functions to their EPIC names. */
  40. alias notword @ function_return = notw($*)
  41. alias remove @ function_return = remw($*)
  42.  
  43. /*
  44.  * All of these functions have been obsoleted by built in functions
  45.  * in ircII-EPIC.  Some of them were obsoleted by comparable functions,
  46.  * and several of them were re-implemented as built-in functions for no
  47.  * reason other than to provide a faster alternative to these functions.
  48.  */
  49.  
  50. /*
  51. # reverse a string fed to it.  The first argument is the width of the
  52. # field in which to right justify the reversed text
  53. # $reverse(65 one two three) returns.. 
  54. #                                                          eerht owt eno
  55. # if 0 is given as the width it's reversed and output left justified
  56. #
  57. # Obsoleted by the built-in $reverse().  You can get the effect of the
  58. # 'width' argument by specifying the width operator: 
  59. #         $[-65]reverse(one two three)
  60. #
  61. alias reverse 
  62. {
  63.     ^assign -rev.result
  64.     @ rev.ind = 0
  65.     @ rev.str = [$1-]
  66.     while (mid($rev.ind 1 $rev.str)!=[])
  67.     {
  68.         @ rev.result = mid($rev.ind 1 $rev.str) ## rev.result
  69.         @ rev.ind = rev.ind + 1
  70.     }
  71.     # This right justifies to a field with of $0.  
  72.     # strip out the format() function if you don't want it formatted.
  73.     @ function_return = format($0 $rev.result)
  74. }
  75.  
  76.  
  77. #
  78. # Center text within a given width.   center(width text)
  79. # "$center(10 one)"   returns "   one"
  80. # this might not make sense at first, but it saves a lot of cursor travel
  81. # not writing all the spaces on the right side.
  82. #
  83. # Obsoleted by the built-in $center().
  84. #
  85. alias center 
  86. {
  87.     @ IRCII.word = [$1-]
  88.     @ IRCII.wordl = @IRCII.word
  89.     @ IRCII.width = [$0]
  90.     if (IRCII.wordl > IRCII.width)
  91.         { @ function_return = ircII.word }
  92.         { @ function_return = [$([${(IRCII.width - ircII.wordl)/2}])] ## IRCII.word }
  93. }
  94.  
  95. #
  96. # This is the huge beastly CPU expensive search and replace function 
  97. # written entirely in ircII script language.
  98. # $sandr(search pat/replace pat/words)
  99. # the search and replace patterns can contain spaces or any other chars
  100. # with the exception of '/'.
  101. #
  102. # Obsoleted by the built-in $sar(), which has more features, allows
  103. # more flexibility, and is orders of magnitude faster.
  104. #
  105. alias sandr 
  106. {
  107.     @ sr.src = left($index(/ $*) $*)
  108.     @ sr.rep = mid(${index(/ $*) +1} ${rindex(/ $*) - index(/ $*) +1} $*)
  109.     @ sr.word = mid(${rindex(/ $*) + 1} 512 $*)
  110.     @ sr.srcl = @sr.src
  111.     @ sr.wordl = @sr.word
  112.     @ sr.cnt1 = 0
  113.     @ sr.cnt2 = 0
  114.     @ sr.lmark = 0
  115.     @ sr.gotit = 0
  116.     ^assign -sr.fstring
  117.     while (sr.cnt1 < sr.wordl)
  118.     {
  119.         @ sr.scnt1 = sr.cnt1
  120.         while ((mid($sr.cnt1 1 $sr.word) == mid($sr.cnt2 1 $sr.src)) && (sr.cnt2 < sr.srcl))
  121.         {
  122.             if (sr.cnt2 == sr.srcl - 1)
  123.             {
  124.                 @ sr.gotit = 1
  125.             }
  126.             @ sr.cnt1 = sr.cnt1 + 1
  127.             @ sr.cnt2 = sr.cnt2 + 1
  128.         }
  129.         @ sr.cnt2 = 0
  130.         if (sr.gotit)
  131.         {
  132.             @ sr.fstring = sr.fstring ## mid($sr.lmark ${sr.scnt1 - sr.lmark} $sr.word) ## sr.rep
  133.             @ sr.gotit = 0
  134.             @ sr.lmark = sr.cnt1
  135.         }
  136.         {
  137.             @ sr.cnt1 = sr.cnt1 +1
  138.         }
  139.     }
  140.     @ sr.fstring = sr.fstring ## mid($sr.lmark 512 $sr.word)
  141.     @ function_return = sr.fstring
  142. }
  143.  
  144. #
  145. # The perfect complement to the $word() function.  
  146. # $notword(index words)  returns words minus the indexed word. 
  147. # the special handling of nw.sep is to deal with the cases when 
  148. # the index points to the first or last word.
  149. #
  150. # Obsoleted by the built-in $notw() function, which actually works reliably
  151. # if $~ appears more than once in the arguments (this breaks in that case)
  152. #
  153. alias notword 
  154. {
  155.     if ([$0] > 0)
  156.     {
  157.     if (([$0] > 1) && ([$0] < #))
  158.         { @ nw.sep = [ ] }
  159.         { @ nw.sep = [] }
  160.         
  161.     @ function_return = [$(1-${[$0]-1})] ## nw.sep ## [$(${[$0]+1}-)]
  162.     }
  163.     {
  164.         @ function_return = [$1-]
  165.     }
  166.     ^assign -nw.sep
  167. }
  168.  
  169.  
  170. # If you want to look an array.. Type /show <arrayname>
  171. # Lists keys and contents
  172. ^alias show 
  173. {
  174.     if ( [$($0)] ) echo $0 $($0)
  175.     foreach $0 ii { show $0.$ii }
  176.     ^assign -ii
  177. }
  178.  
  179.  
  180. # push an item onto the head of a list
  181. # this only takes the name of the list instead of the variable itself. 
  182. # examples.
  183. # /push list Item
  184. # or     if (push(list Item)) { echo push successful } { echo push failed }
  185. # echo $list returns 'Item'
  186. #
  187. # Obsoleted by the built-in $push() function, and built-in PUSH command.
  188. #
  189. alias push 
  190. {
  191.     if (![$1])
  192.         { @function_return = 0 }
  193.         { eval @ $0 = [$1- $($0)];@function_return = 1}
  194. }
  195.     
  196. # pop an item off a list.  Specified with $pop(listname)
  197. # note there is no $ in front of listname.
  198. # examples.
  199. # /eval echo $pop(list)         returns 'Item' and the list is shortened
  200. # push List2 $pop(List1)        moves first item from List1 to List2
  201. #
  202. # Obsoleted by the built-in $pop() function, and built-in POP command.
  203. #
  204. alias pop 
  205. {
  206.     @function_return = word(0 $($0))
  207.     eval @ $0 = notword(1 $($0))
  208. }
  209.  
  210.  
  211. #
  212. # Obsoleted by the built-in $remw() function
  213. #
  214. alias remove {
  215.     @ rem.tmp = [$($0)]
  216.     while (rmatch($1 ${rem.tmp = pluck(rem.tmp $1)})) {#}
  217.     @ function_return = rem.tmp
  218. }
  219.  
  220.  
  221. # This alias sorts flat lists case insensitive
  222. # IT can be easily changed to sort case sensitive by removing the
  223. # $toupper() call.
  224. # operation..    $sort(list or words here)   will return a string with
  225. # the list of words sorted in ascending order.
  226. # to sort in reverse order
  227. #
  228. # Obsoleted by the built-in $sort() function.
  229. #
  230. alias sort {
  231.     @ sort.tmp = [$*]
  232.     while (sort.word = pop(sort.tmp)) {
  233.         eval @ sort.str.$encode($toupper($sort.word)) = sort.word
  234.     }
  235.     @ sort.sep = []
  236.     foreach sort.str ii {
  237.         # sort ascending
  238.         @ sort.tmp = sort.tmp ## sort.sep ## sort.str[$ii]
  239.         # sort descending
  240.         # push sort.tmp sort.str[$ii]
  241.         ^assign -sort.str[$ii]
  242.         @ sort.sep = [ ]
  243.     }
  244.     @ function_return = sort.tmp
  245.     ^assign -sort.sep
  246.     ^assign -sort.tmp
  247. }
  248.  
  249. */
  250.